package com.cjx.stars.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import static com.cjx.stars.common.TeamStatus.*;

/**
 * @author cjx
 * @description 利用正则校验系列格式
 * @createDate 2024/3/3 14:20
 **/
public class RegexValidationUtils {

    /**
     * 校验手机号
     *
     * @param phone
     * @return
     */
    public static boolean validatePhoneNumber(String phone) {
        // 定义中国手机号的正则表达式
        String regex = "^1[3-9]\\d{9}$";
        // 编译正则表达式
        Pattern pattern = Pattern.compile(regex);
        // 创建 Matcher 对象
        Matcher matcher = pattern.matcher(phone);
        // 返回匹配结果
        return matcher.matches();
    }

    /**
     * 校验账号
     *
     * @param account
     */
    public static boolean checkAccount(String account) {
        //2.1 账号的正则表达式 - 无特殊字符串，长度6-16
        String accountRegex = "^[a-zA-Z0-9]{6,16}$";
        return account.matches(accountRegex);
    }

    /**
     * 校验密码
     *
     * @param password
     */
    public static boolean checkPassword(String password) {
        //2.2 密码的正则表达式 - 包含特殊字符串，长度6-16
        String passwordRegex = "^\\p{Graph}{6,16}$";
        return password.matches(passwordRegex);
    }

    /**
     * 校验验证码
     *
     * @param captcha
     * @return 校验结果
     */
    public static boolean checkCaptcha(String captcha) {
        // 定义 6 位数字的正则表达式
        String regex = "^\\d{6}$";
        // 编译正则表达式
        Pattern pattern = Pattern.compile(regex);
        // 创建 Matcher 对象
        Matcher matcher = pattern.matcher(captcha);
        // 返回匹配结果
        return matcher.matches();
    }

    /**
     * 判断队伍状态是否是合法的
     * @param status
     * @return 校验结果
     */
    public static boolean checkTeamStatus(int status){
        return status == PUBLIC_STATUS.getCode() || status == PRIVATE_STATUS.getCode() || status == ENCRYPT_STATUS.getCode();
    }

    /**
     * 校验id合法性
     * @param id id
     * @return 校验结果
     */
    public static boolean checkId(Long id){
        return id != null && id > 0;
    }

}
